<!--#include file="conn.asp"#-->
<!--#include file="sessao.asp"#-->
<%
Select Case request("do")
	Case "logon"
		logon()
	Case "logoff"
		logoff()
	Case "getSessions"
		getSessions()
	Case "setSession"
		setSession()
	Case "setReset"
		setReset()
	Case "setSenha"
		setSenha()
End Select

Sub logon()
	Dim retorno
	Dim sqlsessao
	if request("usuario") <> "" and request("senha") <> "" then
		sql = "select cod_usuario,cod_perfil from informacao.tb_usuarios "
		sql = sql & " where 1=1 "
		sql = sql & " and matricula='"&request("usuario")&"' "
		sql = sql & " and senha=SUBSTRING(sys.Fn_sqlvarbasetostr(HASHBYTES('MD5', '"&request("senha")&"')), 3, 32) "
		sql = sql & " and acesso_sistema=1 "
		Set rs = getRS(sql)
		If not rs.eof Then
			sqlsessao = "update informacao.tb_sessao set ativo=0 where cod_usuario="&rs("cod_usuario")&" and ativo=1 "
			executeQuery(sqlsessao)
			if isnumeric(request.cookies("codsessao")) = true then
				sqlsessao = "update informacao.tb_sessao set ativo=1, "
				sqlsessao = sqlsessao & " cod_usuario="&rs("cod_usuario")&","
				sqlsessao = sqlsessao & " cod_perfil="&rs("cod_perfil")&","
				sqlsessao = sqlsessao & " dt_ultimo_acesso=getdate() "
				sqlsessao = sqlsessao & " where cod_sessao="&request.cookies("codsessao")
				executeQuery(sqlsessao)
				retorno = "true"
			else
				retorno = "false"
			end if
		else
			retorno = "false"
		End if
		rs.close
	else
		retorno = "false"
	End if
	response.write retorno
End Sub

Sub logoff()
	Dim retorno
	if isnumeric(request.cookies("codsessao")) = true then
		sqlsessao = "update informacao.tb_sessao set ativo=0, "
		sqlsessao = sqlsessao & " dt_ultimo_acesso=getdate() "
		sqlsessao = sqlsessao & " where cod_sessao="&request("codsessao")
		executeQuery(sqlsessao)
		response.cookies("codsessao") = request("codsessao")
		response.cookies("informativos_logon") = ""
		response.cookies("informativos_dt") = ""
		retorno = "true"
	else
		retorno = "false"
	end if
	response.write retorno
End Sub

Function verificaHashSenha()
		Dim retorno

		sqlReset = " SELECT hash_alteracao FROM informacao.tb_resets_senha WHERE expirado = 0 AND hash_alteracao = '"&request("ret")&"'"
		Set rsHash = getRS(sqlReset)

		If not rsHash.eof Then
			retorno = "true"
		else
			retorno = "false"
		End if

		verificaHashSenha = retorno

End Function

Function setReset()
	Dim retorno
	Dim sqlReset
	Dim textoEmail
	Dim rsHash

	if request("email") <> "" then
		sql = "SELECT cod_usuario,nome,email FROM informacao.tb_usuarios "
		sql = sql & " WHERE 1=1 "
		sql = sql & " AND email='"&request("email")&"' "		
		Set rs = getRS(sql)
		If not rs.eof Then
			
			'Alterando o status do usuário para 'Reset de senha' para que o acesso só seja autorizado após a troca de senha.
			sqlReset = "UPDATE informacao.tb_usuarios SET cod_status_usuario = 3 WHERE cod_usuario="&rs("cod_usuario")
			executeQuery(sqlReset)

			sqlReset = "UPDATE informacao.tb_resets_senha SET expirado = 1 WHERE cod_usuario = "&rs("cod_usuario")
			executeQuery(sqlReset)

			sqlReset = "INSERT INTO informacao.tb_resets_senha"
			sqlReset = sqlReset & " (cod_usuario)"
			sqlReset = sqlReset & " values"
			sqlReset = sqlReset & " ("&rs("cod_usuario")&")"		
			executeQuery(sqlReset)

			sqlReset = " SELECT hash_alteracao FROM informacao.tb_resets_senha WHERE expirado = 0 AND cod_usuario = "&rs("cod_usuario")	
			Set rsHash = getRS(sqlReset)			

			textoEmail = "Ola, <br><br> Segue o link para reset de senha no sistema de informativos:<br>"
			textoEmail = textoEmail & " http://186.202.185.100/troca_senha.asp?ret="&rsHash("hash_alteracao")

			sqlReset = "[sistema].[sp_envia_email]"
			sqlReset = sqlReset & " '"&rs("nome")&"',"
			sqlReset = sqlReset & " '"&rs("email")&"',"
			sqlReset = sqlReset & " 'Reset de senha realizado - Informativos',"
			sqlReset = sqlReset & " '"&textoEmail&"',"
			sqlReset = sqlReset & " TRUE"
			executeQuery(sqlReset)

			rsHash.close

			retorno = "true"
		else
			retorno = "false"
		End if
		rs.close
	else
		retorno = "false"
	End if
	setReset = retorno
End function

Function setSenha()
	Dim retorno
	Dim sqlReset
	Dim textoEmail
	Dim rsHash

	if request("senha") <> "" and request("ret") <> "" then
		sqlReset = " SELECT hash_alteracao,cod_usuario FROM informacao.tb_resets_senha WHERE expirado = 0 AND hash_alteracao = '"&request("ret")&"'"
		Set rsHash = getRS(sqlReset)
		If not rsHash.eof Then						

			sqlReset = "EXEC informacao.sp_altera_senha  '"&rsHash("cod_usuario")&"', '"&request("senha")&"'"
			executeQuery(sqlReset)

			rsHash.close

			retorno = "true"
		else
			retorno = "false"
		End if
		rsHash.close
	else
		retorno = "false"
	End if
	setSenha = retorno
End function

%>